<template>
  <div class="page-wrap">
    <div class="page-content">
      <div style="font-weight: 700;font-size: 18px">资源</div>
      <div class="card-wrap">
        <Card class="auto-card" v-for="(item, key) in resourceArr" :key="key">
          <div class="card-text-wrap">
            <div class="card-text-num">{{ item.used }}</div>
            <div class="card-text-name" :title="item.name">{{ item.name }}</div>
            <Progress stroke-color="rgb(161, 99, 222)" :percent="item.per" />
          </div>
        </Card>
      </div>
    </div>
  </div>
</template>

<script>
function toDecimal(a, b) {
  let num1 = a / b;
  if (num1 < 1) {
    num1 = num1 * 100;
    num1 = num1.toString();
    let index = num1.indexOf('.');
    let result = num1.slice(0, index + 3);
    return Number(result);
  } else {
    return num1 * 100;
  }
}
import $ from 'jquery';
import encryption from '@/libs/encryption.js';
import { getComResource } from '@/api/homer.js';
export default {
  components: {},
  data() {
    return {
      // 用户信息
      USER_ID: '',
      isRootDesigner: '',
      // 页面设置
      fullHeight: document.documentElement.clientHeight,
      fullWidth: document.documentElement.clientWidth,
      contentHei: 'auto',
      // 资源
      resourceArr: []
    };
  },
  computed: {},
  watch: {},
  filters: {},
  created() {
    // 获取用户id
    let November = sessionStorage.getItem('November');
    November = JSON.parse(encryption.SelfUseDecrypt(November));
    this.USER_ID = November.userId;
    this.isRootDesigner = November.isRootDesigner;
  },
  mounted() {
    this.setStyle();
    window.onresize = () => {
      this.setStyle();
    };
    this.getCompanyData();
  },
  methods: {
    // 设置高度
    setStyle() {
      window.fullHeight = document.documentElement.clientHeight;
      window.fullWidth = document.documentElement.clientWidth;
      this.fullHeight = window.fullHeight;
      this.fullWidth = window.fullWidth;
    },
    // 获取单位资源信息
    getCompanyData() {
      getComResource()
        .then((res) => {
          if (res.data.code === 1) {
            let getData = res.data.data;
            let arr = [];
            for (let i in getData) {
              if (i.indexOf('-limit') > -1) {
                let obj = {
                  name: '',
                  limit: 0,
                  used: 0,
                  per: 0
                };
                let usedName = '';
                usedName = i.split('-limit')[0];
                usedName = usedName + '-used';
                switch (i) {
                  case 'designer-leader-user-count-limit': // 单位最大单位管理员数量
                    obj.name = '单位管理员数量';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  case 'designer-member-user-count-limit': // 单位最大单位设计师数量
                    obj.name = '单位设计师数量';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  case 'designer-evaluator-user-count-limit': // 单位最大评估人员数量
                    obj.name = '评估人员数量';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  case 'designer-referee-user-count-limit': // 单位最大裁判人员数量
                    obj.name = '裁判人员数量';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  case 'experimenter-tester-user-count-limit': // 单位最大操作员数量
                    obj.name = '操作员数量';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  case 'experimenter-group-count-limit': //  单位最大可创建课件用户组数量
                    obj.name = '课件用户组数量';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  case 'access-group-count-limit': // 单位最大可创建接入用户组数量
                    obj.name = '接入用户组数量';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  case 'vcpus-count-limit': // 单位CPU总核数
                    obj.name = 'CPU总核数';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  case 'ram-mb-limit': // 单位内存总数量（MB）
                    obj.name = '内存总数量（MB）';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  case 'disk-gb-limit': // 单位硬盘总容量（GB）
                    obj.name = '硬盘总容量（GB）';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = 0;
                    break;
                  case 'server-count-limit': // 单位虚拟机最大数量
                    obj.name = '虚拟机数量';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = 0;
                    break;
                  case 'icon-count-limit': // 单位上传图标最大数量
                    obj.name = '图标数量';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  case 'image-count-limit': // 单位可上传镜像总数
                    obj.name = '镜像总数';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  case 'image-total-size-limit': // 单位可上传镜像可用硬盘容量（GB）
                    obj.name = '镜像可用硬盘容量（GB）';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  case 'network-count-limit': // 单位可创建网络最大数量
                    obj.name = '网络数量';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  case 'port-count-limit': // 单位可创建网卡最大数量
                    obj.name = '网卡数量';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  case 'subnet-count-limit': // 单位可创建子网最大数量
                    obj.name = '子网数量';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  case 'router-count-limit': // 单位可创建路由器最大数量
                    obj.name = '路由器数量';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  case 'public-ip-address-count-limit': // 单位可使用公网IP最大数量
                    obj.name = '可使用公网IP数量';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  case 'vp-count-limit': // 单位可分配的虚实互连设备最大数量（按照单口算）
                    obj.name = '可分配虚实互连设备数量';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  case 'template-project-count-limit': // 单位最大工程模板数量
                    obj.name = '工程模板数量';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  case 'template-server-count-limit': // 单位最大主机模板数量
                    obj.name = '主机模板数量';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  case 'template-network-count-limit': // 单位最大网络模板数量
                    obj.name = '网络模板数量';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  case 'experiment-video-count-limit': // 单位可上传的视频文件最大个数
                    obj.name = '可上传视频文件个数';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  case 'experiment-video-total-size-limit': // 单位可上传的视频文件总大小
                    obj.name = '可上传视频文件总大小';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  case 'project-count-limit': // 单位可创建工程数量
                    obj.name = '可创建工程数量';
                    obj.limit = getData[i];
                    obj.used = getData[usedName] ? getData[usedName] : 0;
                    obj.per = toDecimal(obj.used, obj.limit);
                    break;
                  default:
                }
                if (obj.name) {
                  arr.push(obj);
                }
              }
            }
            arr = arr.sort((x, y) => {
              return y.used - x.used;
              // return y.per - x.per    // 2020-04-23 暂用上面的
            });
            this.resourceArr = arr;
            console.log(this.resourceArr);
          }
        })
        .catch((err) => {
          console.log(err);
        });
    }
  }
};
</script>
<style scoped>
.page-wrap {
  padding: 30px;
  height: 100%;
}
.page-content {
  background-color: #fff;
  border-radius: 10px;
  height: 100%;
  padding: 20px;
  overflow-x: hidden;
  overflow-y: auto;
}
.card-wrap {
  display: flex;
  justify-content: flex-start;
  flex-wrap: wrap;
  margin-top: 15px;
}
.auto-card {
  width: 220px;
  /* display: inline-block; */
  margin-right: 15px;
  margin-bottom: 15px;
}
.card-text-wrap {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}
.card-text-num {
  font-size: 18px;
  font-weight: bold;
}
.card-text-name {
  font-size: 14px;
  color: #666;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
</style>
